package com.shasselclub.project.ask.problem.mapper;

import java.util.List;
import java.util.Map;

import com.shasselclub.api.v1.result.AnswerResult;
import com.shasselclub.api.v1.result.ProblemResult;
import com.shasselclub.project.ask.problem.domain.Problem;
import com.shasselclub.project.ask.problem.domain.Answer;

/**
 * 问题管理Mapper接口
 * 
 * @author 郑云飞
 * @date 2022-08-05
 */
public interface ProblemMapper 
{
    /**
     * 查询问题管理
     * 
     * @param id 问题管理主键
     * @return 问题管理
     */
    public Problem selectProblemById(String id);

    /**
     * 查询问题管理列表
     * 
     * @param problem 问题管理
     * @return 问题管理集合
     */
    public List<Problem> selectProblemList(Problem problem);

    /**
     * 新增问题管理
     * 
     * @param problem 问题管理
     * @return 结果
     */
    public int insertProblem(Problem problem);

    /**
     * 修改问题管理
     * 
     * @param problem 问题管理
     * @return 结果
     */
    public int updateProblem(Problem problem);

    /**
     * 删除问题管理
     * 
     * @param id 问题管理主键
     * @return 结果
     */
    public int deleteProblemById(Long id);

    /**
     * 批量删除问题管理
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProblemByIds(String[] ids);

    /**
     * 批量删除问题答案选项
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAnswerByProblemIds(String[] ids);
    
    /**
     * 批量新增问题答案选项
     * 
     * @param answerList 问题答案选项列表
     * @return 结果
     */
    public int batchAnswer(List<Answer> answerList);
    

    /**
     * 通过问题管理主键删除问题答案选项信息
     * 
     * @param id 问题管理ID
     * @return 结果
     */
    public int deleteAnswerByProblemId(Long id);

    int count(Map<String, Object> queryMap);

    Answer getAnswer(Map<String, Object> queryMap);

    /**
     * 答题正确，增加分数和总成绩
     * @param addScoreMap
     * @return
     */
    int addScore(Map<String, Object> addScoreMap);

    /**
     * 助力成功，增加总成绩
     * @param addScoreMap
     * @return
     */
    int addZhuLiScore(Map<String, Object> addScoreMap);

    List<ProblemResult> selectProblemResultList(Map<String, Object> queryMap);

    List<AnswerResult> getAnswerResultList(Map<String, Object> answerQueryMap);

    int updateAnswerWrongNum(Map<String, Object> updateAnswerWrongNumMap);

    int getTotalScore(Map<String, Object> probleQueryMap);
}
